home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d3 / db4less3.arc / JOBSTAT.FRG < prev    next >
Text File  |  1990-06-16  |  9KB  |  453 lines

  1. * Program............: D:\DBSYS\CLASSES\BT4W\JOBSTAT.FRG
  2. * Date...............: 12-04-88
  3. * Versions...........: dBASE IV, Report 1
  4. *
  5. * Notes:
  6. * ------
  7. * Prior to running this procedure with the DO command
  8. * it is necessary use LOCATE because the CONTINUE
  9. * statement is in the main loop.
  10. *
  11. *-- Parameters
  12. PARAMETERS gl_noeject, gl_plain, gl_summary, gc_heading, gc_extra
  13. ** The first three parameters are of type Logical.
  14. ** The fourth parameter is a string.  The fifth is extra.
  15. PRIVATE _peject, _wrap
  16.  
  17. *-- Test for no records found
  18. IF EOF() .OR. .NOT. FOUND()
  19.    RETURN
  20. ENDIF
  21.  
  22. *-- turn word wrap mode off
  23. _wrap=.F.
  24.  
  25. IF _plength < 2
  26.    SET DEVICE TO SCREEN
  27.    DEFINE WINDOW gw_report FROM 7,17 TO 11,62 DOUBLE
  28.    ACTIVATE WINDOW gw_report
  29.    @ 0,1 SAY "Increase the page length for this report."
  30.    @ 2,1 SAY "Press any key ..."
  31.    x=INKEY(0)
  32.    DEACTIVATE WINDOW gw_report
  33.    RELEASE WINDOW gw_report
  34.    RETURN
  35. ENDIF
  36.  
  37. _plineno=0          && set lines to zero
  38. *-- NOEJECT parameter
  39. IF gl_noeject
  40.    IF _peject="BEFORE"
  41.       _peject="NONE"
  42.    ENDIF
  43.    IF _peject="BOTH"
  44.       _peject="AFTER"
  45.    ENDIF
  46. ENDIF
  47.  
  48. *-- Set-up environment
  49. ON ESCAPE DO prnabort
  50. IF SET("TALK")="ON"
  51.    SET TALK OFF
  52.    gc_talk="ON"
  53. ELSE
  54.    gc_talk="OFF"
  55. ENDIF
  56. gc_space=SET("SPACE")
  57. SET SPACE OFF
  58. gc_time=TIME()      && system time for predefined field
  59. gd_date=DATE()      && system date  "    "    "     "
  60. gl_fandl=.F.        && first and last page flag
  61. gl_prntflg=.T.      && Continue printing flag
  62. gl_widow=.T.        && flag for checking widow bands
  63. gn_length=LEN(gc_heading)  && store length of the HEADING
  64. gn_level=2          && current band being processed
  65. gn_page=_pageno     && grab current page number
  66.  
  67. *-- Initialize group footer field variables
  68. r_foot1=.F.
  69. r_foot2=.F.
  70. r_foot3=.F.
  71.  
  72. *-- Initialize calculated variables.
  73. EMPNAME=""
  74. JOBVAR=0
  75.  
  76. *-- Set up procedure for page break
  77. IF _pspacing > 1
  78.    gn_atline=_plength - (_pspacing + 1)
  79. ELSE
  80.    gn_atline=_plength - 1
  81. ENDIF
  82. ON PAGE AT LINE gn_atline EJECT PAGE
  83.  
  84. *-- Print Report
  85.  
  86. PRINTJOB
  87.  
  88. gl_newpage=.T.      && ok to begin band on new page
  89.  
  90. *-- Initialize group break vars.
  91. r_mvar4=JOBID
  92. r_mvar5=EMPID
  93.  
  94. *-- Initialize summary variables.
  95. JOBHOURS=0
  96. JOBAMT=0
  97. TOTHOURS=0
  98. TOTAMT=0
  99. r_msum1=0
  100. DECLARE r_msum2[3]
  101. STORE 0 TO r_msum2[1]
  102. STORE 0 TO r_msum2[2],r_msum2[3]
  103. DECLARE r_msum3[3]
  104. STORE 0 TO r_msum3[1]
  105. STORE 0 TO r_msum3[2],r_msum3[3]
  106.  
  107. *-- Initialize suppress repeated value variables.
  108. r_msrv1=""
  109.  
  110. *-- Assign initial values to calculated variables.
  111. EMPNAME=TRIM(LNAME)+', '+FNAME
  112. JOBVAR=BIDPRICE-JOBAMT
  113.  
  114. IF gl_plain
  115.    ON PAGE AT LINE gn_atline DO Pgplain
  116. ELSE
  117.    ON PAGE AT LINE gn_atline DO Pgfoot
  118. ENDIF
  119.  
  120. DO Pghead
  121.  
  122. gl_fandl=.T.        && first physical page started
  123.  
  124. DO Grphead
  125.  
  126. *-- File Loop
  127. DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
  128.    DO CASE
  129.    CASE .NOT. (JOBID = r_mvar4)
  130.       gn_level=4
  131.    CASE .NOT. (EMPID = r_mvar5)
  132.       gn_level=5
  133.    OTHERWISE
  134.       gn_level=0
  135.    ENDCASE
  136.    *-- test whether an expression didn't match
  137.    IF gn_level <> 0
  138.       DO Grpfoot WITH 100-gn_level
  139.       DO Grpinit
  140.    ENDIF
  141.    *-- Repeat group intros
  142.    IF gn_level <> 0
  143.       DO Grphead
  144.    ENDIF
  145.    DO Upd_Vars
  146.    *-- Detail lines
  147.    IF .NOT. gl_summary
  148.       DO Detail
  149.    ENDIF
  150.    r_foot1=JOBDESC
  151.    r_foot2=BIDPRICE
  152.    r_foot3=JOBVAR
  153.    CONTINUE
  154. ENDDO
  155.  
  156. IF gl_prntflg
  157.    gn_level=3
  158.    DO Grpfoot WITH 97
  159.    DO Rsumm
  160. ELSE
  161.    gn_level=3
  162.    DO Rsumm
  163.    DO Reset
  164.    RETURN
  165. ENDIF
  166.  
  167. ON PAGE
  168.  
  169. ENDPRINTJOB
  170.  
  171. DO Reset
  172. RETURN
  173. * EOP: D:\DBSYS\CLASSES\BT4W\JOBSTAT.FRG
  174.  
  175. *-- Update summary fields and/or calculated fields in the detail band.
  176. PROCEDURE Upd_Vars
  177. EMPNAME=TRIM(LNAME)+', '+FNAME
  178. *-- Summary calculation - Sum
  179. JOBHOURS=JOBHOURS+HOURS
  180. *-- Summary calculation - Sum
  181. JOBAMT=JOBAMT+BILLING
  182. *-- Summary calculation - Sum
  183. TOTHOURS=TOTHOURS+HOURS
  184. *-- Summary calculation - Sum
  185. TOTAMT=TOTAMT+BILLING
  186. *-- Summary calculation - Count
  187. r_msum1=r_msum1+1
  188. *-- Summary calculation - Average
  189. r_msum2[1]=r_msum2[1]+1                && count
  190. r_msum2[2]=r_msum2[2]+HOURS            && sum
  191. r_msum2[3]=r_msum2[2]/r_msum2[1]       && average
  192. *-- Summary calculation - Average
  193. r_msum3[1]=r_msum3[1]+1                && count
  194. r_msum3[2]=r_msum3[2]+BILLING          && sum
  195. r_msum3[3]=r_msum3[2]/r_msum3[1]       && average
  196. RETURN
  197. * EOP: Upd_Vars
  198.  
  199. *-- Set flag to get out of DO WHILE loop when escape is pressed.
  200. PROCEDURE prnabort
  201. gl_prntflg=.F.
  202. RETURN
  203. * EOP: prnabort
  204.  
  205. *-- Reset group break variables.  Reinit summary
  206. *-- fields with reset set to a particular group band.
  207. PROCEDURE Grpinit
  208. IF gn_level <= 4
  209.    JOBHOURS=0
  210.    JOBAMT=0
  211. ENDIF
  212. IF gn_level <= 4
  213.    r_mvar4=JOBID
  214. ENDIF
  215. IF gn_level <= 5
  216.    r_mvar5=EMPID
  217. ENDIF
  218. RETURN
  219. * EOP: Grpinit
  220.  
  221. *-- Reset summary fields (on page) and suppress repeated values.
  222. PROCEDURE Pageinit
  223. r_msrv1=""
  224. RETURN
  225. * EOP: Pageinit
  226.  
  227. *-- Process Group Intro bands during group breaks
  228. PROCEDURE Grphead
  229. IF EOF()
  230.    RETURN
  231. ENDIF
  232. gl_widow=.T.         && enable widow checking
  233. IF gn_level <= 4
  234.    DO Head4
  235. ENDIF
  236. gn_level=0
  237. RETURN
  238. * EOP: Grphead.PRG
  239.  
  240. *-- Process Group Summary bands during group breaks
  241. PROCEDURE Grpfoot
  242. PARAMETER ln_level
  243. IF ln_level >= 96
  244.    DO Foot96
  245. ENDIF
  246. RETURN
  247. * EOP: Grpfoot.PRG
  248.  
  249. PROCEDURE Pghead
  250. *-- Print HEADING parameter ie. REPORT FORM <name> HEADING <expC>
  251. IF .NOT. gl_plain .AND. gn_length > 0
  252.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(_rmargin-_lmargin))
  253.    ?
  254. ENDIF
  255. RETURN
  256. * EOP: Pghead
  257.  
  258.  
  259. PROCEDURE Head4
  260. IF gn_level=1
  261.    RETURN
  262. ENDIF
  263. IF .NOT. gl_newpage
  264.    gl_newpage=.T.
  265.    EJECT PAGE
  266. ENDIF
  267. IF 20 < _plength
  268.    IF (gl_widow .AND. _plineno+20 > gn_atline) ;
  269.    .OR. (gl_widow .AND. _plineno+19 > gn_atline)
  270.       EJECT PAGE
  271.    ENDIF
  272. ENDIF
  273. ?? "Report Date:" AT 0,
  274. ?? gd_date AT 13
  275. ?
  276. ?? "Time:" AT 7,
  277. ?? gc_time FUNCTION "T" AT 13
  278. ?
  279. ?
  280. ?
  281. ?? "JOB STATUS REPORT" AT 31
  282. ?
  283. ?
  284. ?
  285. ?? ;
  286. "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒";
  287. + "▒▒▒▒▒▒▒▒▒";
  288. AT 0
  289. ?
  290. ?
  291. DEFINE BOX FROM 2 TO 65 HEIGHT 7 SINGLE
  292. ?
  293. ?
  294. ?? "JOB:" AT 4,
  295. ?? JOBDESC FUNCTION "T" AT 14
  296. ?
  297. ?
  298. ?? "CUSTOMER:" AT 4,
  299. ?? CUSTNAME FUNCTION "T" AT 14
  300. ?
  301. ?
  302. ?
  303. ?
  304. ?
  305. ?? "STAFF MEMBER" AT 8,
  306. ?? "DATE" AT 39,
  307. ?? "HOURS" AT 51,
  308. ?? "AMOUNT" AT 64
  309. ?
  310. ?
  311. gl_newpage=.F.
  312. RETURN
  313.  
  314. gl_newpage=.F.
  315.  
  316. PROCEDURE Detail
  317. ?? IIF(r_msrv1 <> EMPNAME,EMPNAME,"") FUNCTION "T" PICTURE "XXXXXXXXXXXXXXXXXXXXXXXXXX" AT 8,
  318. IF .NOT. (r_msrv1 = EMPNAME)
  319.    r_msrv1=EMPNAME
  320. ENDIF
  321. ?? DATE AT 36,
  322. ?? HOURS PICTURE "9,999.99" AT 49,
  323. ?? BILLING PICTURE "9999,999.99" AT 60
  324. ?
  325. gl_newpage=.F.
  326. RETURN
  327. * EOP: Detail
  328.  
  329. gl_newpage=.F.
  330.  
  331. PROCEDURE Foot96
  332. JOBVAR=BIDPRICE-JOBAMT
  333. ?
  334. DEFINE BOX FROM 3 TO 72 HEIGHT 12 SINGLE
  335. ?
  336. ?
  337. ?? "JOB:" AT 5,
  338. ?? r_foot1 FUNCTION "T" AT 10
  339. ?
  340. ?
  341. ?? "TO DATE:" AT 36,
  342. ?? JOBHOURS PICTURE "9,999.99" AT 49,
  343. ?? JOBAMT PICTURE "9999,999.99" AT 60
  344. ?
  345. ?
  346. ?? "BID PRICE:" AT 36,
  347. ?? r_foot2 PICTURE "9999,999.99" AT 60
  348. ?
  349. ?? "-----------" AT 60
  350. ?
  351. ?
  352. ?? "VARIANCE:" AT 36,
  353. ?? r_foot3 PICTURE "9999,999.99" AT 60
  354. ?
  355. ?
  356. ?
  357. ?
  358. gl_newpage=.F.
  359. RETURN
  360.  
  361. PROCEDURE Rsumm
  362. ?? "Report Date:" AT 0,
  363. ?? gd_date AT 13
  364. ?
  365. ?? "Time:" AT 7,
  366. ?? gc_time FUNCTION "T" AT 13
  367. ?
  368. ?
  369. ?
  370. ?? "JOB STATUS REPORT SUMMARY" AT 27
  371. ?
  372. ?
  373. ?
  374. ?? ;
  375. "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒";
  376. + "▒▒▒▒▒▒▒▒▒";
  377. AT 0
  378. ?
  379. ?
  380. DEFINE BOX FROM 30 TO 72 HEIGHT 11 DOUBLE
  381. ?
  382. ?
  383. ?? "TOTAL TO DATE:" AT 32,
  384. ?? TOTHOURS PICTURE "9,999.99" AT 49,
  385. ?? TOTAMT PICTURE "9999,999.99" AT 60
  386. ?
  387. ?
  388. ?? "═════════════════════════════════════════" AT 31
  389. ?
  390. ?
  391. ?? "TIME SLIPS:" AT 32,
  392. ?? r_msum1 PICTURE "999" AT 44
  393. ?
  394. ?
  395. ?? "AVG TO DATE:" AT 32,
  396. ?? r_msum2[3] PICTURE "9,999.99" AT 49,
  397. ?? r_msum3[3] PICTURE "9999,999.99" AT 60
  398. ?
  399. ?
  400. gl_fandl=.F.        && last page finished
  401. ?
  402. RETURN
  403. * EOP: Rsumm
  404.  
  405. PROCEDURE Pgfoot
  406. PRIVATE _box
  407. gl_widow=.F.         && disable widow checking
  408. EJECT PAGE
  409. gl_newpage=.T.
  410. *-- is the page number greater than the ending page
  411. IF _pageno > _pepage
  412.    GOTO BOTTOM
  413.    SKIP
  414.    gn_level=0
  415. ENDIF
  416. IF gl_fandl
  417.    DO Pageinit
  418. ENDIF
  419. IF .NOT. gl_plain .AND. gl_fandl
  420.    DO Pghead
  421. ENDIF
  422. IF gn_level = 0 .AND. gl_fandl
  423.    gn_level=1
  424.    DO Grphead
  425. ENDIF
  426. gl_widow=.T.         && enable widow checking
  427. RETURN
  428. * EOP: Pgfoot
  429.  
  430. *-- Process page break when PLAIN option is used.
  431. PROCEDURE Pgplain
  432. PRIVATE _box
  433. EJECT PAGE
  434. IF gl_fandl
  435.    DO Pageinit
  436. ENDIF
  437. IF gn_level = 0 .AND. gl_fandl
  438.    gn_level=1
  439.    DO Grphead
  440. ENDIF
  441. RETURN
  442. * EOP: Pgplain
  443.  
  444. *-- Reset dBASE environment prior to calling report
  445. PROCEDURE Reset
  446. SET SPACE &gc_space.
  447. SET TALK &gc_talk.
  448. ON ESCAPE
  449. ON PAGE
  450. RETURN
  451. * EOP: Reset
  452.  
  453.